Certain semiconductor devices capable of generating a semi-predictable multi-bit output in response to a known input stimulus can be tested by applying the known stimulus over a fixed period of time, and capturing the number of occurrences of particular multi-bit outputs during that time. Each particular multi-bit output being monitored may be referred to as a “bin,” and the number of counts in each bin at the conclusion of the fixed test period can be used to generate a histogram. The histogram can be used in various ways (e.g. numerical analysis) to determine if the device under test (DUT) is acceptable or not, or determine performance parameters.
One such device capable of being tested in the above-described manner is an ADC. An ADC generates a multi-bit output (also referred to herein as a “code”) in response to an analog input signal. A common input stimulus used for testing ADCs is a sine wave, which is relatively easily generated in a “clean” manner (substantially free of spurious frequencies). When the sine wave is applied to the input of the ADC, the input signal varies between a minimum and maximum analog voltage level, and the ADC outputs a multi-bit digital signal in accordance with the analog voltage level. Over time, a histogram can be generated indicative of the acceptability of the ADC.
FIG. 1a illustrates an exemplary block diagram of a high level perspective of test system 100 that may be used to test DUTs and generate histograms as described above. It should be emphasized that FIG. 1a is only exemplary, and that many other test system configurations well-understood to those skilled in the art may also be used. In FIG. 1a, modules 102 may be functional units such as a reference generator, a digital pincard, an analog card, a device power supply (DPS), or instruments such as a waveform generator. The physical connections to modules 102 may be obtained through module connection enabler 104 that includes switch matrix network 106. Switch matrix network 106 may include logic, traces, and pins.
System controller 108 is typically the point of interaction for a user. System controller 108 provides a gateway to site controllers 110 and synchronization of the site controllers in a multi-site/multi-DUT environment. A system controller 108 and multiple site controllers 110 may operate in a master-slave configuration. System controller 108 controls the overall system operation and determines that functions that a particular site controller 110 should perform. Each site controller 110 is itself sufficient to test DUT 112. Site controller 110 controls and monitors the operation of various modules 102 within test site 114. Test site 114 is a collection of modules 102 that service the testing of a single DUT 112. Site controller 110 can control one or multiple test sites 114.
As described above, an input stimulus such as a sine wave may be supplied from a reference generator module (one of the modules 102 in test site 114) to DUT 112. A multi-bit output from the DUT can be fed back to another module 102, where a count of each multi-bit output received from the DUT is accumulated.
FIG. 1b illustrates exemplary test site 114 and DUT 112 in greater detail. In FIG. 1b, DUT 112 is an ADC, and module 102_A generates a sine wave that is fed into the input of the ADC. The ADC generates an N-bit digital output, which is connected to the address line of memory 116 within module 102_B. At every sample of the ADC, the N-bit digital output addresses memory 116, and the count stored at that address is read out, modified (incremented by one), and written back to that address (a read-modify-write or RMW cycle).
An inefficiency results from the amount of time it takes to perform a RMW cycle in memory. For example, external DRAM protocols as defined by DRAM manufacturers have a delay period between the time that an address can be presented and when data can be presented, due to pre-charging delays. This latency limits the speed at which the test can be performed. Therefore, performing RMW cycles takes a relatively large number of clock cycles when using DRAM, which in turn slows down the process of gathering of histogram data.
Therefore, there is a need to improve the ability to perform multiple increments to the count of a particular code when gathering histogram data.